package com.lyc.domain.strategy.service.rule.chain;

import com.lyc.domain.strategy.service.rule.chain.factory.DefaultChainFactory;

/**
 * @author lyc
 * @description 抽奖策略规则责任链接口
 * 通过继承责任链装配接口，达到对责任链对象的调用者隐藏装配逻辑，更加符合接口单一职责原则
 */
public interface ILogicChain extends ILogicChainArmory, Cloneable {

    /**
     * 责任链的执行方法
     *
     * @param userId     用户ID
     * @param strategyId 策略ID
     * @return 奖品 + 链标识
     */
    DefaultChainFactory.StrategyAwardVO logic(String userId, Long strategyId);

}
